iT邦幫忙

2023 iThome 鐵人賽

DAY 14
1

繼續上一章資料處理 Python Pandas 好用的function - Part 1

#1. pd.to_datetime(df['Date']) /pd.date_range()/pd.to_timedelta
Pandas支援以下各種時間序列的轉換:

  • int、float、str、datetime、list、tuple、1-d array、Series、DataFrame/dict-like

另一個有用的參數是"utc"(即utc= False )。這個參數用於控制與時區相關的轉換。如果設置_utc=True_,它將把所有時間轉換為UTC並解析混合時區的輸入。

pandas還具有生成日期序列的能力,支援以下頻率類型:

  • "B" - 工作日
  • "D" - 日曆日
  • "W" - 每周
  • "M" - 月底
  • "SM" - 半月底(每月15日和月底)
  • "MS" - 月初
  • "SMS" - 半月初(每月1日和15日)
  • "Q" 季度結束
  • "H" 小時

完整列表查看這裡

另一個有用的參數是"format"。你可以指定要將輸入轉換為的日期時間格式的類型。請參閱這裡以獲得可用格式的完整列表。

最後,"to_timedelta"是一個函數,它將將輸入轉換為絕對timedelta(例如天、小時、分鐘、秒)。以下是可以設置輸入的單位的列表:

  • ‘W’
  • ‘D’ / ‘days’ / ‘day’
  • ‘hours’ / ‘hour’ / ‘hr’ / ‘h’
  • ‘m’ / ‘minute’ / ‘min’ / ‘minutes’ / ‘T’
  • ‘S’ / ‘seconds’ / ‘sec’ / ‘second’
  • ‘ms’ / ‘milliseconds’ / ‘millisecond’ / ‘milli’ / ‘millis’ / ‘L’
  • ‘us’ / ‘microseconds’ / ‘microsecond’ / ‘micro’ / ‘micros’ / ‘U’
  • ‘ns’ / ‘nanoseconds’ / ‘nano’ / ‘nanos’ / ‘nanosecond’ / ‘N’

Example

[In] date = '2023-09-26'
date = pd.to_datetime(date, format='%Y-%m-%d')
five_days_later = date + pd.to_timedelta(5, unit ='D')
print(five_days_later)

[Out] 2023-10-01 00:00:00

#2. pd.read_csv()
pd.read_csv() 此函數接受任何有效的字符串路徑。如果路徑不在與Python文件相同的文件夾中,則需要列出完整路徑(例如:C:/Users/t12334/downloads/sample.csv

有趣的是,您還可以使用pd.read_csv讀取包含2維數據(列和行)的url、tsv和txt文件。另一種讀取它的方法是使用read_table()函數。

[In] df=pd.read_csv('data.tsv', sep='\t')

它還可以傳遞一個參數"編碼",你可以在其中指定用於讀取所選文件的編碼。
另一個有用的參數是"標題",你可以輸入"1"以指示第1行包含標題。您甚至可以使用"usecols"選擇列,指定列標題。

如果有日期列,你也可以使用"parse_dates"參數提前指定它。
此函數包含許多有用的參數,可以幫助您立即整理數據。

[In]df = pd.read_csv('data/data_4.csv',                  
        encoding = 'UTF-8', 
        headers = 1, 
        usecols: ['date', 'customer name', 'order no', 'sales amount'],                  parse_dates={ 'date': ['year', 'month', 'day'] })

#3. df.to_csv()
如果你需要將數據框輸出到 CSV 文件,可以使用此函數。

你可以使用 "sep" 參數指定要使用的分隔符。
所有其他參數都類似於 "read_csv",例如 "編碼"、'標題' 等。

一個關鍵參數是 "模式",你可以選擇以下選項:

  • 'w'(默認):首先截斷文件
  • 'x':獨占創建,如果文件已存在,它將返回錯誤
  • 'a':如果存在,則在文件末尾添加
[In]df.to_csv('data/data_4.csv', sep="'", mode='a')

#4. #  df.describe()
這是選定數據集的強大快速分析工具。它會給你輸入的數據的基本統計資料,包括:

  • 計數
  • 平均值
  • 標準差
  • 最小值
  • 百分位數(25%、50%、75%)
  • 最大值
[In] df.describe()
[Out]
||A|B|C|D|
|---|---|---|---|---|
|count|6.000000|6.000000|6.000000|6.000000|
|mean|-0.287310|-0.556224|-0.636804|0.256646|
|std|0.868388|0.856621|1.054561|1.263056|
|min|-1.563473|-1.471748|-1.614128|-0.845678|
|25%|-0.718623|-1.026082|-1.196022|-0.504730|
|50%|-0.247366|-0.823316|-0.958137|-0.151107|
|75%|0.121759|-0.241730|-0.512879|0.503218|
|max|0.965253|0.922574|1.349356|2.589048|

#5. df.loc / df.iloc()
df.loc[] 是一個行列過濾函數,將返回滿足條件的行列。

[In] df.loc[df['A'] >0] # return rows in Column "A" where the values are larger than 0
[Out] 
||A|B|C|D|
|---|---|---|---|---|
|2023-09-17|0.965253|-1.471748|1.349356|-0.150890|
|2023-09-18|0.176092|-1.062239|-1.614128|-0.845678|

df.iloc[] 是一個整數位置過濾工具,您可以使用整數位置(從 0 到長度)並選擇軸位置(行位置、列位置)

[In] df.iloc[2:5,1:3] # 3rd to 5th row and 2nd column to 3rd column selected
[Out]|
|B|C|
|---|---|---|
|2023-09-18|-1.062239|-1.614128|
|2023-09-19|-0.917610|-1.172997|
|2023-09-20|-0.729022|-0.436079|

我們會在下一章繼續研究pandas。

Ref:
https://pandas.pydata.org/docs/reference/api/pandas.to_datetime.html#to-datetime-tz-examples


對 dbt 或 data 有興趣 :wave:?歡迎加入 dbt community 到 #local-taipei 找我們,也有實體 Meetup 請到 dbt Taipei Meetup 報名參加


上一篇
資料處理 Python Pandas 好用的function - Part 1
下一篇
資料處理 Python Pandas 好用的function - Part 3
系列文
資料分析的硬體以及軟體學習以及成長心得30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言